Modern computer systems, personal computer systems, are often characterized by a main computer or a host device to which one or more peripheral devices may be coupled. Typical peripheral devices that might be used in such a system include keyboards, pointing devices, monitors, printers, mass storage devices, and audio or visual input/output devices. In the past, device drivers, programs or routines which control or manage the flow of data to and from peripheral devices, have been used to control these peripheral devices. Recently, because of improved technology, these devices have become more sophisticated and are now able to offer their own services. For example, modern printers may be able to accept documents in a multitude of formats beyond the native format that the printer normally accepts. Printers capable of printing postscript documents are an example. However, current and future printers may offer additional transformation and document services.
Many peripheral devices are able to advertise their services through an advertising protocol offered by the device. Current implementations, however, do not necessarily make use of the advertising protocol. Instead, the implementation might bind to the device and then the host computer itself creates the service that is offered to users. In computer programming in general, the term bind refers to making an association between two or more programming objects or value items for some scope of time and place. As used herein, the terms bind and bound refer to a program connection between a device and a host, or between a device and a user.
As peripheral devices become more complex, devices such as printers are able to not only advertise print services, but are also able to offer these print services on their own without being bound to the host. These devices can act as a peer on a network in the network's environment. This is particularly important considering the explosive growth of computer networks in industry and in the home. When a printer or other device is connected to a computer that is connected to a local area network, a wide area network or even the Internet, the device is able to advertise its services and offer its services to a multitude of computers. Under the current paradigm, the user would look for a particular service by searching and listening for advertisements from a device and then interface with the device and allow the device to directly offer the desired service. The current paradigm, however, has several weaknesses. For example, allowing users to communicate directly with connected devices might create security weaknesses in the system. As another example, a system might have a plurality of printers attached serving as a pool of printers for users. However, the users are unable to take advantage of this in an efficient manner because the users must communicate with individual printers and there is no scheduling mechanism to distribute the load of printing across the individual printers in the pool of printers. Furthermore, the user is limited to the capabilities of the individual printers.